package com.ybkj.daijia.server.mapper;

import com.ybkj.daijia.server.model.OrderStatus;
import com.ybkj.daijia.server.model.OrderStatus.StatusType;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface OrderStatusMapper {

    /**
     * 保存订单状态
     *
     * @param record
     * @return
     */
    int insertRecord(OrderStatus record);

    /**
     * 根据主键查询订单状态信息
     *
     * @param id
     * @return
     */
    OrderStatus selectByPrimaryKey(Long id);

    /**
     * 根据一组主键查询订单状态信息
     *
     * @param ids
     * @return
     */
    List<OrderStatus> selectByIdIn(Long ids[]);

    /**
     * 根据主键删除订单状态信息
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

    int deleteByCompany(Long companyId);

    /**
     * 根据主键更新订单状态信息
     *
     * @param record
     * @return
     */
    int updateByPrimaryKey(OrderStatus record);

    /**
     * 根据订单主键与状态查询所有状态信息
     *
     * @param orderId
     * @param statusType
     * @return
     */
    List<OrderStatus> selectByOrderAndType(Long orderId,
        OrderStatus.StatusType statusType);

    /**
     * 根据订单主键查询所有状态信息
     *
     * @param orderId
     * @return
     */
    List<OrderStatus> selectByOrder(Long orderId);

    /**
     * 根据订单分页查询订单状态信息
     *
     * @param orderId
     * @param offset
     * @param size
     * @return
     */
    List<OrderStatus> selectByPage(@Param("orderId") Long orderId,
        @Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 根据订单统计订单状态
     *
     * @param orderId
     * @return
     */
    long countByPage(@Param("orderId") Long orderId);

    List<OrderStatus> selectByCompanyAndTypeWithParams(
        @Param("companyId") Long companyId, @Param("statusType") StatusType statusType,
        @Param("param") String param,
        @Param("offset") Integer offset, @Param("size") Integer size);

    long countByCompanyAndTypeWithParams(
        @Param("companyId") Long companyId, @Param("statusType") StatusType statusType,
        @Param("param") String param);


    OrderStatus findLastChufa(long orderId);
}
